package com.yy.kit.zfb.menu;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.request.AlipayOpenPublicMenuCreateRequest;
import com.alipay.api.response.AlipayOpenPublicMenuCreateResponse;
import com.yy.kit.collections.YYMapKits;
import com.yy.kit.log.YYLogKits;
import com.yy.kit.object.YYObjectKits;
import com.yy.kit.string.YYStrKits;
import com.yy.kit.zfb.factory.AlipayAPIClientFactory;

import java.util.Map;

/**
 * <p>
 * 支付宝生活号菜单操作工具类
 * </p>
 *
 * @author 杨阳
 * @since 2017年10月9日
 */
public class YYAlipayMenuKits {

    /**
     * <p>
     * 创建菜单
     * </p>
     *
     * @param menuJsonStr 菜单的json格式字符串
     * @throws AlipayApiException 菜单生成失败
     * @author 杨阳
     * @since 2017年10月9日
     */
    public static Map<String, Object> createMenu(String menuJsonStr) throws AlipayApiException {

        YYLogKits.info(YYAlipayMenuKits.class, "┌───────────────────────────────────────────────────────────────────────────┐");

        Map<String, Object> map = YYMapKits.createHashMap();

        AlipayClient alipayClient = AlipayAPIClientFactory.getAlipayClient();
        AlipayOpenPublicMenuCreateRequest request = new AlipayOpenPublicMenuCreateRequest();

        YYLogKits.info(YYAlipayMenuKits.class, "├请求参数:{} ", menuJsonStr);

        request.setBizContent(menuJsonStr);
        AlipayOpenPublicMenuCreateResponse response = alipayClient.execute(request);

        YYLogKits.info(YYAlipayMenuKits.class, "├返回信息:{} ", response.getBody());

        if (YYObjectKits.isNotNull(response) && "Success".equals(response.getMsg())) {
            map.put("success", Boolean.TRUE);
            map.put("msg", "同步菜单成功!");
        } else {
            map.put("success", Boolean.FALSE);
            map.put("msg", YYStrKits.format("支付宝帐号错误;<br>错误内容：{},<br>错误原因：{}", response.getSubMsg(), "应该是在生活号'概览'中没有添加《生活号 服务窗》的功能"));
        }
        YYLogKits.info(YYAlipayMenuKits.class, "└───────────────────────────────────────────────────────────────────────────┘");

        return map;
    }

}
